<?php

namespace builder\bundle;

use Yii;

/**
 * 代码高亮
 */
class Highlight extends BaseAsset
{
    //支持的语言
    //@see highlight/languages
    public static $supportLangs = ['php', 'json'];
    //当前UI主题
    //@see highlight/styles
    public static $curTheme = 'idea';
    /**
     * 是否自动高亮所有
     * @var bool|string
     * - false 不自动高亮`html`，需要应用层手动调用api。
     * - true 自动高亮所有`css`选择器为`pre code`的元素。
     * - css选择器 自动高亮所有指定选择器的元素
     */
    public static $isAutoHighlightAll = true;

    public $js = ['highlight/highlight.min.js'];

    /**
     * 动态注册web资源
     */
    protected function registerWebAssets()
    {
        foreach (self::$supportLangs as $lang) {
            $this->js[] = 'highlight/languages/' . $lang . '.min.js';
        }
        $this->css[] = 'highlight/styles/' . self::$curTheme . '.min.css';

        $isAutoHighlightAll = self::$isAutoHighlightAll;
        //自动高亮代码
        if ($isAutoHighlightAll !== false) {
            $jsCode = [];
            if (is_string($isAutoHighlightAll)) {
                $jsCode[] = "hljs.configure( { cssSelector: '{$isAutoHighlightAll}' } )";
            }

            $jsCode[] = 'hljs.highlightAll();';
            Yii::$app->view->registerJs(implode("\n", $jsCode));
        }
    }

    /**
     * {@inheritdoc}
     */
    public function init()
    {
        $this->registerWebAssets();
        parent::init();
    }
}